package com.hnchances.studentscoresystem.controller;

import com.hnchances.studentscoresystem.dto.response.CommonResponse;
import com.hnchances.studentscoresystem.entity.Course;
import com.hnchances.studentscoresystem.service.CourseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 课程管理控制器
 * 接口前缀：/course
 * 鉴权规则：所有接口需登录（无额外身份限制）
 */
@Slf4j
@RestController
@RequestMapping("/course")
public class CourseController {

    @Autowired
    private CourseService courseService;

    /**
     * 新增课程
     * @param course 课程信息（courseName 必传）
     * @return 新增结果
     */
    @PostMapping("/add")
    public CommonResponse<Boolean> addCourse(@RequestBody Course course) {
        log.info("新增课程，courseName: {}", course.getCourseName());
        boolean result = courseService.insert(course);
        return CommonResponse.success(result, "课程新增成功");
    }

    /**
     * 根据ID查询课程
     * @param courseId 课程ID（请求体JSON格式：{"id":1}）
     * @return 课程信息
     */
    @PostMapping("/getById")
    public CommonResponse<Course> getCourseById(@RequestBody Integer courseId) {
        Course course = courseService.selectById(courseId);
        if (course == null) {
            return CommonResponse.fail(400, "课程不存在或已删除");
        }
        return CommonResponse.success(course, "课程查询成功");
    }

    /**
     * 查询所有正常状态课程
     * @return 课程列表
     */
    @PostMapping("/getAll")
    public CommonResponse<List<Course>> getAllCourses() {
        List<Course> courseList = courseService.selectAll();
        return CommonResponse.success(courseList, "所有课程查询成功");
    }

    /**
     * 修改课程信息
     * @param course 课程信息（id 必传，courseName 可选）
     * @return 修改结果
     */
    @PostMapping("/update")
    public CommonResponse<Boolean> updateCourse(@RequestBody Course course) {
        if (course.getId() == null) {
            return CommonResponse.fail(400, "课程ID不能为空");
        }
        boolean result = courseService.update(course);
        return CommonResponse.success(result, "课程修改成功");
    }

    /**
     * 软删除课程（修改status为1）
     * @param courseId 课程ID（请求体JSON格式：{"id":1}）
     * @return 删除结果
     */
    @PostMapping("/del")
    public CommonResponse<Boolean> deleteCourse(@RequestBody Integer courseId) {
        boolean result = courseService.deleteById(courseId);
        return CommonResponse.success(result, "课程删除成功");
    }
}